<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script src="./index.js"></script>
<script>
// 测试代码
// const data = {
//   foo: 1,
//   get bar() {
//     return this.foo;
//   },
// };
// console.log(data)
// Object.defineProperty(data, "too", {
//     get () {
//         return `${this.foo}-${this.bar}`
//     },
//     enumerable: true
// })
// for (let key in data) {
//     console.log(key)
// }


// let user = {
//     get name() {
//         console.log('this._name==', this._name)
//         return this._name
//     },
//     set name(val) {
//         if (val.length < 4) {
//             return
//         }
//         this._name = val
//     },
// }
// user.name = 'zhenzhen'
// console.log('user==', user.name)


// function User(name, birthday) {
//     this.name = name
//     // this.age = age
//     this.birthday = birthday
//     Object.defineProperty(this, 'age', {
//         get() {
//             let todayYear = new Date().getFullYear()
//             return todayYear - this.birthday.getFullYear()
//         },
//         enumerable: true
//     })
// }


// let john = new User('John', new Date(1994, 10, 01))
// console.log('john==', john)
// console.log('在使用的旧代码==', john.age)


// let target = {}

// let proxy = new Proxy(target, {
    
// })

// proxy.name = 'zhenzhen'

// console.log(target.name)
// console.log(proxy.name)
// for(let key in proxy) {
//     console.log(key)
// }


// let range = {
//     start: 1,
//     end: 10
// }
// range = new Proxy(range, {
//     has(target, key) {
//         return key >= target.start && key <= target.end
//     }
// })
// console.log(10 in range)


// let user = {}
// Reflect.set(user, 'name', 'zhenzhen')
// console.log(Reflect.get(user, 'name'))

let user = {
    name: 'zhenzhen'
}
console.log(user)

</script>
</html>